Skip to content

feat: add ladle#4168

Closed
jog1t wants to merge 1 commit intomainfrom
02-10-feat_add_ladle
Closed

feat: add ladle#4168
jog1t wants to merge 1 commit intomainfrom
02-10-feat_add_ladle

Conversation

@jog1t
Copy link
Contributor

@jog1t jog1t commented Feb 10, 2026

Description

Added Ladle component development environment to the frontend. This PR:

  1. Adds Ladle as a dependency to the frontend package
  2. Creates a Docker setup for building and serving the Ladle environment
  3. Configures Railway deployment files for PR and staging environments
  4. Adds a sample workflow component story
  5. Updates .gitignore to exclude the Ladle build directory
  6. Adds npm scripts for Ladle development and building

Ladle provides an isolated environment for developing and testing UI components, making it easier to build and maintain a consistent component library.

Type of change

  • New feature (non-breaking change which adds functionality)

How Has This Been Tested?

Tested locally by running the Ladle development server and verifying that components can be viewed and interacted with in isolation.

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • New and existing unit tests pass locally with my changes

@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 10, 2026 21:04 Destroyed
@railway-app
Copy link

railway-app bot commented Feb 10, 2026

🚅 Deployed to the rivet-pr-4168 environment in rivet-frontend

Service Status Web Updated (UTC)
website 😴 Sleeping (View Logs) Web Feb 19, 2026 at 2:29 am
frontend-cloud ❌ Build Failed (View Logs) Web Feb 16, 2026 at 4:39 pm
frontend-inspector ❌ Build Failed (View Logs) Web Feb 16, 2026 at 4:39 pm
ladle ❌ Build Failed (View Logs) Web Feb 16, 2026 at 4:39 pm
mcp-hub ✅ Success (View Logs) Web Feb 10, 2026 at 9:04 pm

Copy link
Contributor Author

jog1t commented Feb 10, 2026


How to use the Graphite Merge Queue

Add the label merge-queue to this PR to add it to the merge queue.

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@jog1t jog1t marked this pull request as ready for review February 10, 2026 21:04
@graphite-app
Copy link
Contributor

graphite-app bot commented Feb 10, 2026

Graphite Automations

"Test" took an action on this PR • (02/10/26)

1 assignee was added to this PR based on Kacper Wojciechowski's automation.

@claude
Copy link

claude bot commented Feb 10, 2026

PR Review: feat: add ladle

Summary

This PR adds Ladle as a component development environment for the frontend. The core additions are solid: a shared Vite config base, Ladle configuration, a Caddy server config, a Dockerfile, and Railway deployment config. Several issues need to be addressed before merging.


Blockers

1. Accidentally committed scripts/skill-evals/results/ files

The following files are unrelated to Ladle and appear to be accidentally committed agent evaluation artifacts:

  • scripts/skill-evals/results/auth-flow/ (3 files)
  • scripts/skill-evals/results/fill-form/ (3 files)
  • scripts/skill-evals/results/js-counter/ (7 files, including raw agent.log)
  • scripts/skill-evals/results/open-and-snapshot/ (3 files)
  • scripts/skill-evals/results/react-counter/ (4 files)

These should be removed from this PR. If these results need to be committed, they belong in a separate PR. Consider adding scripts/skill-evals/results/ to .gitignore.

2. CMD removed from cloud.Dockerfile and inspector.Dockerfile

Both files had their final CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile"] line removed. The only remaining directive is ENTRYPOINT ["/docker-entrypoint.sh"]. If docker-entrypoint.sh passes $@ to caddy, containers will now start with no arguments. Please confirm that the entrypoint script hardcodes the caddy command and this removal is intentional.


Issues

3. @ladle/react placed in dependencies, not devDependencies

Ladle is a build/development tool and should be in devDependencies. The same applies to @xyflow/react if it was added solely for Ladle stories.

4. railway.cloud-staging.toml deleted without explanation

This file was removed with no mention in the PR description. Was cloud-staging intentionally retired? If so, please add a note. If not, this deletion is unintentional.

5. railway.ladle.toml has incomplete watchPatterns

The watch patterns only include /frontend/** and /pnpm-lock.yaml, but ladle.Dockerfile copies many additional directories that can change independently:

/engine/sdks/typescript/**
/rivetkit-typescript/packages/**
/shared/typescript/**
/examples/**

Changes to rivetkit or engine SDK code will not trigger a Railway rebuild. This matches the same issue in the existing cloud/inspector Railway configs; consider fixing all three.

6. Turbo build:ladle inputs are incomplete

The turbo.json entry for build:ladle does not list the Ladle-specific config files as inputs, so turbo will not invalidate the cache when they change:

 "build:ladle": {
     "dependsOn": ["^build"],
     "inputs": [
         "src/**",
         "tsconfig.json",
+        ".ladle/**",
+        "vite.base.config.ts",
         "package.json"
     ],

Similarly, build:cloud and build:inspector should include vite.base.config.ts in their inputs since they now depend on it via mergeConfig(baseViteConfig(), ...).


Minor / Suggestions

7. Placeholder story in workflow.stories.tsx

The only story exported is:

export const World = () => <div>World</div>;

This does not demonstrate the actual Workflow component. Either replace it with a real story or, if this is intentional scaffolding, add a comment explaining it is a placeholder pending component work.

8. frontend/.ladle/config.mjs has no story glob

The Ladle config only sets viteConfig. Adding an explicit stories glob makes discovery behavior predictable and avoids Ladle scanning the entire src/ tree:

export default {
  viteConfig: ".ladle/vite.config.ts",
  stories: "src/**/*.stories.{tsx,ts}",
};

9. ladle.Dockerfile copies frontend/public/examples/ twice

COPY frontend/ frontend/
COPY frontend/public/examples/ frontend/public/examples/  # redundant, already included above

The second COPY is a no-op since frontend/ is already copied in full. Remove the redundant line.

10. ladle.Dockerfile missing bash / entrypoint

The cloud and inspector Dockerfiles install bash and use a custom entrypoint script for runtime env-var substitution. The ladle Dockerfile skips this. Since Ladle is static and has no runtime env vars to substitute, this is likely fine, but a brief comment in the Dockerfile clarifying the intentional difference would help future readers.


What Looks Good

  • The extraction of shared Vite config into vite.base.config.ts reduces duplication correctly and uses mergeConfig properly.
  • Caddy config (Caddyfile.ladle) has correct security headers, gzip compression, aggressive caching for static assets, and SPA catch-all routing.
  • Docker layer ordering is good: workspace files first, then package sources, then install, then build.
  • The pnpm cache mount IDs are unique per Dockerfile, which is correct.

@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from ee1c116 to 7d52277 Compare February 10, 2026 21:23
@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 10, 2026 21:23 Destroyed
@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from 7d52277 to ed19db1 Compare February 10, 2026 21:28
@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 10, 2026 21:28 Destroyed
@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from ed19db1 to 9801124 Compare February 10, 2026 21:40
@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 10, 2026 21:40 Destroyed
@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from 9801124 to 1a557d1 Compare February 10, 2026 21:49
@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 10, 2026 21:49 Destroyed
@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from 1a557d1 to b2407e6 Compare February 10, 2026 22:03
@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 10, 2026 22:03 Destroyed
@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from b2407e6 to 044bf2a Compare February 10, 2026 22:17
@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 10, 2026 22:17 Destroyed
@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from 044bf2a to c133769 Compare February 10, 2026 22:25
@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 10, 2026 22:25 Destroyed
@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from c133769 to 7203012 Compare February 10, 2026 22:29
@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 10, 2026 22:29 Destroyed
@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from 7203012 to 06a1487 Compare February 10, 2026 22:36
@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 10, 2026 22:36 Destroyed
@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from 06a1487 to a270bd5 Compare February 10, 2026 22:42
@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 10, 2026 22:42 Destroyed
@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from a270bd5 to 111ecae Compare February 10, 2026 22:48
@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 10, 2026 22:48 Destroyed
@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from 111ecae to f8ea0fa Compare February 10, 2026 22:52
@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 10, 2026 22:52 Destroyed
@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from f8ea0fa to aa5df64 Compare February 10, 2026 22:57
@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 10, 2026 22:57 Destroyed
This was referenced Feb 10, 2026
@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from aa5df64 to 995ac00 Compare February 16, 2026 16:39
@railway-app railway-app bot temporarily deployed to rivet-frontend / rivet-pr-4168 February 16, 2026 16:39 Destroyed
@jog1t jog1t force-pushed the 02-10-feat_add_ladle branch from 995ac00 to e03420d Compare February 16, 2026 19:13
@pkg-pr-new
Copy link

pkg-pr-new bot commented Feb 16, 2026

More templates

@rivetkit/cloudflare-workers

pnpm add https://pkg.pr.new/rivet-dev/rivet/@rivetkit/cloudflare-workers@4168

@rivetkit/framework-base

pnpm add https://pkg.pr.new/rivet-dev/rivet/@rivetkit/framework-base@4168

@rivetkit/next-js

pnpm add https://pkg.pr.new/rivet-dev/rivet/@rivetkit/next-js@4168

@rivetkit/react

pnpm add https://pkg.pr.new/rivet-dev/rivet/@rivetkit/react@4168

rivetkit

pnpm add https://pkg.pr.new/rivet-dev/rivet/rivetkit@4168

@rivetkit/sql-loader

pnpm add https://pkg.pr.new/rivet-dev/rivet/@rivetkit/sql-loader@4168

@rivetkit/sqlite-vfs

pnpm add https://pkg.pr.new/rivet-dev/rivet/@rivetkit/sqlite-vfs@4168

@rivetkit/traces

pnpm add https://pkg.pr.new/rivet-dev/rivet/@rivetkit/traces@4168

@rivetkit/workflow-engine

pnpm add https://pkg.pr.new/rivet-dev/rivet/@rivetkit/workflow-engine@4168

@rivetkit/virtual-websocket

pnpm add https://pkg.pr.new/rivet-dev/rivet/@rivetkit/virtual-websocket@4168

@rivetkit/engine-runner

pnpm add https://pkg.pr.new/rivet-dev/rivet/@rivetkit/engine-runner@4168

@rivetkit/engine-runner-protocol

pnpm add https://pkg.pr.new/rivet-dev/rivet/@rivetkit/engine-runner-protocol@4168

commit: 21d269f

@graphite-app
Copy link
Contributor

graphite-app bot commented Feb 19, 2026

Merge activity

  • Feb 19, 11:17 PM UTC: NathanFlurry added this pull request to the Graphite merge queue.
  • Feb 19, 11:18 PM UTC: CI is running for this pull request on a draft pull request (#4244) due to your merge queue CI optimization settings.
  • Feb 19, 11:19 PM UTC: Merged by the Graphite merge queue via draft PR: #4244.

graphite-app bot pushed a commit that referenced this pull request Feb 19, 2026
# Description

Added Ladle component development environment to the frontend. This PR:

1. Adds Ladle as a dependency to the frontend package
2. Creates a Docker setup for building and serving the Ladle environment
3. Configures Railway deployment files for PR and staging environments
4. Adds a sample workflow component story
5. Updates `.gitignore` to exclude the Ladle build directory
6. Adds npm scripts for Ladle development and building

Ladle provides an isolated environment for developing and testing UI components, making it easier to build and maintain a consistent component library.

## Type of change

- [x] New feature (non-breaking change which adds functionality)

## How Has This Been Tested?

Tested locally by running the Ladle development server and verifying that components can be viewed and interacted with in isolation.

## Checklist:

- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my code
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] New and existing unit tests pass locally with my changes
@graphite-app graphite-app bot closed this Feb 19, 2026
@graphite-app graphite-app bot deleted the 02-10-feat_add_ladle branch February 19, 2026 23:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant